//请编写一个C程序。输入一个自然数num1，对num1进行质因数分解。num1的质因数个数小于200个。
#include <stdio.h>
#include <math.h>
int IsPrimeNumber(int x);

int main()
{
    int num1 = 0;
    printf("请输入一个自然数：\n");
    scanf("%d", &num1);
    int primeFactors[200] = {0}; //找到的质因数
    int index = 0, x = num1;
    while (x != 1)
    {
        for (int i = 2; i <= x; i++)
        {
            if (x % i == 0)
            {
                if (IsPrimeNumber(i) == 1)
                {
                    primeFactors[index] = i;
                    index++;
                    x = x / i;
                    break;
                }
            }
        }
    }
    //打印出质因数
    printf("自然数%d的质因数分解为：", num1);
    int j = 0;
    while ((primeFactors[j] != 0) && (j <= 200))
    {
        printf("%d ", primeFactors[j]);
        j++;
    }
}

//判断x(大于1的自然数数)是否为质数，x为质数则返回1，否则返回0
int IsPrimeNumber(int x)
{
    if (x == 2)
        return (1);
    for (int i = 2; i <= round(sqrt(x)); i++)
    {
        if ((x % i) == 0)
            return (0);
    }
    return (1);
}
